package SubjectString;

public class ReverseString {

/**
 * 难度：简单
 * 
 * 344. 反转字符串
 * 	编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
 * 	不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
 * 	你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
 * 
 * 示例 1：
 * 	输入：['h','e','l','l','o']
 * 	输出：['o','l','l','e','h']
 * 
 * 示例 2：
 * 	输入：['H','a','n','n','a','h']
 * 	输出：['h','a','n','n','a','H']
 * 
 * */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ReverseString rs = new ReverseString();
		char[] s = {'H','a','n','n','a','h'};
		rs.reverseString1(s);
		for(char c:s) {
			System.out.print(c+",");
		}
		
	}
	//自己写
	public void reverseString(char[] s) {
		int n=s.length;
		for(int i=0;i<n/2;i++) {
			char temp = s[i];
			s[i]=s[n-i-1];
			s[n-i-1]=temp;
		}
    }
	//方法一：双指针
	public void reverseString1(char[] s) {
        int n = s.length;
        for (int left = 0, right = n - 1; left < right; ++left, --right) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
        }
    }
}
